package com.suyang.syt.listener;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import org.apache.log4j.Logger;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.suyang.syt.context.BeanFactoryContext;
import com.suyang.syt.util.PropertiesUtil;

public class InitServlet extends HttpServlet {

	private static final long serialVersionUID = 8340638729258499382L;

	private static WebApplicationContext webApplicationContext;
	private Logger logger = Logger.getLogger(InitServlet.class);

	@Override
	public void init(ServletConfig config) throws ServletException {
		super.init(config);
		// 初始化spring的工厂
		webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
		// 缓存spring的工厂webApplicationContext
		BeanFactoryContext.setWebApplicationContext(webApplicationContext);
		// try {
		// // 初始化权限信息
		// Map<String, Set<String>> auths =
		// AuthUtil.initAuth("com.suyang.syt.controller");
		// this.getServletContext().setAttribute("allAuths", auths);
		// logger.info("Authority: " + auths);
		// } catch (Exception e) {
		// logger.error(e.getMessage(), e);
		// }

		try {
			// 缓存项目路径
			String ctx = PropertiesUtil.get("systemContext.properties", "ctx");
			BeanFactoryContext.setCtx(ctx);
			logger.info("PROJECT CTX: " + ctx);
			String realPath = config.getServletContext().getRealPath("/");
			BeanFactoryContext.setRealPath(realPath);
			logger.info("PROJECT REALPATH: " + realPath);
		} catch (Exception e) {
			logger.error(e.getMessage(), e);
		}
		//
		// try {
		// // 加载数据字典缓存
		// DictionaryService dictionaryService =
		// webApplicationContext.getBean(DictionaryService.class);
		// String json = dictionaryService.initDictionary();
		// logger.info("Dictionary: " + json);
		// } catch (Exception e) {
		// logger.error(e.getMessage(), e);
		// }
		//
		// try {
		// // 将已经过时的消息更新状态
		// MessageSpreadService messageSpreadService = (MessageSpreadService)
		// webApplicationContext.getBean("messageSpreadService");
		// String ids = messageSpreadService.updateInitStatus();
		// if (EmptyUtil.isNotEmpty(ids)) {
		// logger.info("消息初始化成功![" + ids + "]");
		// }
		// } catch (Exception e) {
		// logger.error(e.getMessage(), e);
		// }

		// 调用微信接口获取accessToken,并进行缓存,2小时刷新一次
		// new RefreshAccessToken(7200);
	}

	public static WebApplicationContext getWebApplicationContext() {
		return webApplicationContext;
	}

}